﻿//3132. 找出与数组相加的整数 II
//给你两个整数数组 nums1 和 nums2。
//从 nums1 中移除两个元素，并且所有其他元素都与变量 x 所表示的整数相加。如果 x 为负数，则表现为元素值的减少。
//执行上述操作后，nums1 和 nums2 相等 。当两个数组中包含相同的整数，并且这些整数出现的频次相同时，两个数组 相等 。
//返回能够实现数组相等的 最小 整数 x 。



class Solution {
public:
    int minimumAddedInteger(vector<int>& nums1, vector<int>& nums2)
    {
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        int ans = INT_MAX - 1;
        for (int k = 0; k < 3; k++)
        {
            int x = nums2[0] - nums1[k];
            int flag = 1;
            int i = k;
            for (int j = 0; j < nums2.size(); j++)
            {
                while (i < nums1.size() && nums1[i] + x != nums2[j])
                {
                    i++;
                }
                if (i >= nums1.size())
                {
                    flag = 0;
                    break;
                }
                i++;
            }
            if (flag)
            {
                ans = min(ans, x);
            }
        }
        return ans;
    }
};